<?php
/** 
 * Clase para leer archivos de lenguaje properties
 * @author gemu
 * 
 * 
 */
class Language
{
	private static $languageFile =  "/../public/language.properties";
	private static $languageBuffer = null;
	
	/**
	 * Precarga datos.
	 */
	public static function precargar() {
		// precarga el archivo de recursos
		if(Language::$languageBuffer == null) {
			Language::$languageBuffer = Language::parseIni(dirname(__FILE__).Language::$languageFile);
		}
	}
	
	/**
	 * Traduce un codigo de lenguaje por su valor.
	 * @param string $msgCode
	 */
	public static function getMessage($msgCode, $params=array()) {
		Language::precargar();
		$msgRetorno = '';
		
	    if (Language::$languageBuffer !== false) {
	        if (isset(Language::$languageBuffer[$msgCode])) {
	            $msgRetorno = Language::$languageBuffer[$msgCode];
	            // procesa los parametros
	            for ($i = 0; $i < count($params); $i++) {
	                $msgRetorno = str_replace('{' . $i . '}', $params[$i], $msgRetorno);
	            }
	        }
        }
        return $msgRetorno;
    }
    
    /**
     * Parsea un archivo ini.
     */
    private static function parseIni($iniFile)
    {
        $FileHandle = file($iniFile);
        $CountLines = count($FileHandle);
        $Counter = 0;
        $NKeys = "";
        while ($Counter < $CountLines) {
            $CurLine = trim($FileHandle[$Counter]);
            if($CurLine != "" && substr($CurLine, 0, 1) != "#") {
            	$CurLineSplit = explode("=", $CurLine);
            	$CurKey = $CurLineSplit[0];
            	$CurValue = $CurLineSplit[1];
            	$NKeys[trim($CurKey)] = trim($CurValue);
            }
            $Counter++;
        }
        return $NKeys;
	}
}
?>